A virtual machine (VM) is a software implementation of a machine (i.e., a computer) that executes programs like a physical machine would. Generally, access to resources in virtualized environments is associated with a high level of overhead because the VM typically cannot directly communicate with a virtualized resource. A hypervisor that hosts the VM generally has the burden of emulating the needed interface or driver on behalf of the VM. In other words, the hypervisor presents the VM with a virtual platform and monitors the execution of the VM and how the VM accesses the available hardware resources and devices.
For example, for a VM to read or write data to a virtualized storage device, control of the read or write operations will have to be transferred between the VM and the hypervisor. In a purely emulated case, the VM has no knowledge that the emulated device is not a real physical device, because the hypervisor emulates the interface in software. A high overhead is associated with such emulation. The operational overhead is even more costly, if there is a need for transferring control intermittently between the VM and the hypervisor when accessing a device.